home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Cream of the Crop 21
/
Cream of the Crop 21 (Terry Blount) (October 1996).iso
/
database
/
tickle15.zip
/
EDITOR.PPS
< prev
next >
Wrap
Text File
|
1996-08-02
|
25KB
|
950 lines
;
; EDITOR.PPS - Program to access TICKLE.DBF and edit information
;
; Written by Dan Shore
;
;==========================================================================
'
' Declare our variables
'
STRING dbfields(49), file_name, pcbtext_number, main_prompt
STRING user_input, pcb_user_name, field_name, next_file_entry
STRING hold, hold2, desc_hold, flag_list, reg_code, tkl_cfg
STRING user_input2, stack_var, temp_var, tkltext, cname_file
STRING dlpath_lst, first_letter, dlpath_lst_entry, back_space
STRING ndx_file_name, file_root, file_ext, user_input3
STRING char1, char2, char3, char4, current_char
INT cmd_line_count, filenames_used, next_flag_file
INT count, x, i, hold_num, start, end, line_count
INT temp_int, letter_value, cname_size, dot_number
INT alpha, index_start, index_end, current_record
INT low_record, high_record
LONG file_size, ndx_size, seek_record, value, y
FLOAT high_num, low_num, rec_num, time_now, prev_ti
BOOLEAN menu_displayed, did_list, did_delete, did_reorg
BOOLEAN start_flag, did_flag, did_help, edit_description
BOOLEAN do_menu, find_user, found_user, partial_name, exact_name
BOOLEAN list_names, partial_search_found, cfg_file_exist
BOOLEAN file_exists, done, is_key, non_stop
:MAIN_BEGIN
' Open the database file and index files.
'
find_user = TRUE
do_menu = TRUE
tkltext = PPEPATH() + "TKLTEXT" + LANGEXT()
char1 = "\"
char2 = "|"
char3 = "/"
char4 = "-"
back_space = CHR(8) + CHR(32) + CHR(8)
GOSUB OPEN_DATABASE
IF (DERR(0)) THEN
NEWLINE
PRINTLN READLINE (tkltext,2)
NEWLINE
PRINTLN READLINE (tkltext,3)
NEWLINE
LOG "Cannot open TICKLE.DBF (DataBase) - Aborting", FALSE
GOTO EXIT_PROG
END IF
GOSUB OPEN_INDEX
IF (DERR(0)) THEN
NEWLINE
PRINTLN READLINE (tkltext,4)
NEWLINE
PRINTLN READLINE (tkltext,3)
NEWLINE
LOG "Cannot open TICKLE.NDX (Index) - Aborting", FALSE
GOTO EXIT_PROG
END IF
CLS
NEWLINE
PRINTLN READLINE (tkltext,41)
GOSUB EDIT_FIND_USER
GOSUB MENU
GOTO EXIT_PROG
:MAIN_END
'
'====================================
'| |
'| Subroutines used in EDITOR.PPE |
'| |
'====================================
'
'
'
:CHECK_NUMBER_RANGE
IF (INSTR(user_input,"-") = 0 || INSTR(user_input,"-") = 1) RETURN
stack_var = user_input
user_input = ""
TOKENIZE stack_var
IF (TOKCOUNT() = 0) RETURN
FOR hold_num = 1 TO LEN(stack_var)
temp_var = GETTOKEN()
IF (temp_var = "") BREAK
IF (INSTR(temp_var, "-") = 0) THEN
user_input = user_input + temp_var + " "
ELSE
hold = MID(temp_var, 1, INSTR(temp_var,"-")-1)
IF (hold != "") hold2 = MID(temp_var, INSTR(temp_var,"-")+1, LEN(temp_var))
start = S2I(hold,10)
end = S2I(hold2,10)
IF (start < 1) THEN
IF (start = 0) hold = temp_var
NEWLINE
PRINTLN READLINE (tkltext,26), hold, READLINE (tkltext,27)
NEWLINE
CONTINUE
END IF
IF (end > 24) THEN
NEWLINE
PRINTLN READLINE (tkltext,26), end, READLINE (tkltext,27)
NEWLINE
CONTINUE
END IF
IF (end >= start) THEN
FOR count = start TO end
user_input = user_input + LTRIM(I2S(count,10)," ") + " "
NEXT
ELSE
NEWLINE
PRINTLN READLINE (tkltext,5), temp_var, READLINE (tkltext,6)
END IF
END IF
NEXT
RETURN
'
'
'
:FIND_EMPTY_SLOT
filenames_used = 0
FOR i = 2 TO 25
IF (DGET(0,DNAME(0,i)) = " ") THEN
filenames_used = i-1
BREAK
END IF
NEXT
RETURN
'
'
'
:SEQ_DISP_USER
is_key = FALSE
IF (DTOP(0) = FALSE) THEN
NEWLINE
SPRINTLN READLINE (tkltext,42)
NEWLINE
WAIT
GOTO EXIT_PROG
ELSE
IF (!list_names) PRINT " @X0ESearching @X0F[@X0CENTER Aborts@X0F] @X0F... @X0E"
FOR x = 1 to DRECCOUNT(0)
DGO 0, x
hold = TRIM(DGET(0, DNAME(0,1))," ")
IF (!list_names) THEN
GOSUB MARKTIME
IF (INSTR(hold, user_input) > 0) THEN
PRINT back_space
partial_search_found = TRUE
NEWLINE
PRINTLN READLINE (tkltext,43), hold
NEWLINE
user_input2 = "N"
main_prompt = READLINE (tkltext,44)
INPUTSTR main_prompt, user_input2, @X0E, 1, "YN", UPCASE+LFAFTER
IF (user_input2 = "" || user_input2 = "N" || user_input2 = NOCHAR()) THEN
found_user = TRUE
BREAK
ELSE
NEWLINE
PRINT " @X0ESearching @X0F[@X0CENTER Aborts@X0F] @X0F... @X0E"
END IF
ELSE
GOSUB CHECK_FOR_KEY
IF (is_key) BREAK
END IF
ELSE
'
' Print out number and username
'
PRINT SPACE (5-LEN(STRING(x))), "@X0F", x, ". @X03", hold
IF (!(x%2)) THEN
NEWLINE
INC line_count
ELSE
PRINT SPACE(33-LEN(hold))
END IF
'
' If non-stop mode, check for abort (enter key)
'
IF (non_stop) THEN
GOSUB CHECK_FOR_KEY
IF (is_key) THEN
non_stop = FALSE
BREAK
END IF
END IF
IF (line_count > 21 && !non_stop) THEN
main_prompt = READLINE (tkltext,45)
user_input2 = "Y"
INPUTSTR main_prompt, user_input2, @X0E, 2, "YNS", UPCASE+ERASELINE
IF (user_input2 = "N" || user_input2 = NOCHAR()) THEN
BREAK
ELSE IF (user_input2 = "NS") THEN
NEWLINE
PRINTLN " @X0E*** @X4FHit ENTER to@X1F Abort Non-Stop Listing@X0E ***"
DELAY 18
NEWLINE
non_stop = TRUE
ELSE
line_count = 0
END IF
END IF
END IF
NEXT
IF (!found_user) DGO 0, 1
PRINT back_space
NEWLINE
END IF
RETURN
'
' Subroutine to find/add username in index
'
:FIND_ADD_USER
'
' Get the current users name
'
DSEEK 0, pcb_user_name
IF (DCHKSTAT(0) = 0) THEN
NEWLINE
PRINTLN READLINE (tkltext,46)
NEWLINE
GOSUB FIND_EMPTY_SLOT
ELSE
NEWLINE
PRINTLN READLINE (tkltext,47)
NEWLINE
DELAY 18
filenames_used = 32000
END IF
RETURN
'
'
'
:DISPLAY_INFO
DISPFILE PPEPATH() + "info", GRAPH+LANG
menu_displayed = TRUE
RETURN
'
'
'
:DISPLAY_HELP
NEWLINE
DISPFILE PPEPATH() + "help", GRAPH+LANG
did_help = TRUE
RETURN
'
'
'
:EDIT_DESC
IF (!did_list) THEN
GOSUB LIST_FILES
did_list = TRUE
ELSE
NEWLINE
END IF
user_input = ""
main_prompt = READLINE (tkltext,8)
INPUTSTR main_prompt, user_input, @X0E, 2, MASK_ASCII(), LFAFTER+UPCASE
IF (user_input = "") THEN
NEWLINE
RETURN
END IF
hold_num = S2I(user_input,10)
user_input = STRING(hold_num)
IF (hold_num > 24 || hold_num < 1) THEN
NEWLINE
PRINTLN READLINE (tkltext,9)
NEWLINE
RETURN
ELSE
desc_hold = "desc" + TRIM(user_input," ")
hold = "file" + TRIM(user_input," ")
END IF
IF (DGET(0,hold) != " ") THEN
edit_description = TRUE
GOSUB ASK_FILE_DESC
edit_description = FALSE
ELSE
NEWLINE
PRINTLN READLINE (tkltext,58)
END IF
NEWLINE
RETURN
'
'
'
:EDIT_FIND_USER
found_user = FALSE
partial_name = FALSE
exact_name = FALSE
list_names = FALSE
partial_search_found = FALSE
user_input = ""
DISPFILE PPEPATH()+"USRMENU", GRAPH+LANG
main_prompt = READLINE (tkltext,48)
INPUTSTR main_prompt, user_input, @X0E, 1, MASK_ALPHA(), LFAFTER+UPCASE+GUIDE+FIELDLEN
SELECT CASE (user_input)
CASE "A"
partial_name = TRUE
CASE "B"
exact_name